package org.tik.mybatis.transaction;

import org.tik.mybatis.session.TransactionIsolationLevel;

import javax.sql.DataSource;
import java.sql.Connection;

/**
 * 事务工厂
 *
 * @ClassName: TransactionFactory
 * @author: pengwei
 * @data 2022年10月13日 19:34:00
 */
public interface TransactionFactory {

    /**
     * 根据Connection创建Transaction
     *
     * @param conn
     * @return
     */
    Transaction newTransaction(Connection conn);

    /**
     * 根据DataSource创建Transaction
     *
     * @param dataSource
     * @param level
     * @param autoCommit
     * @return
     */
    Transaction newTransaction(DataSource dataSource, TransactionIsolationLevel level, boolean autoCommit);
}
